Generally, hardware controllers utilize a technique called “interrupt coalescing” in which an interrupt rate can be modified based on statically assigned parameters. In particular, two types of static assigned parameters are utilized where the interrupt to the CPU is signaled when a certain number of input/output requests have been completed or when a certain period of time has elapsed after an I/O request has been marked as completed.
Typically, interrupt coalescing is enabled on high-end servers to enable the servers to process more I/O requests per second. With high interrupt rates, the CPU spends a large amount of time performing context saves and restores that are required to transition into and out of the interrupt mode. This can result in a considerable amount of power to be consumed to keep the CPU in an active or powered state. Notably, in client-based systems it is desirable to reduce power consumption in order to preserve battery life. Consequently, there is a need for a technique for dynamically modifying the interrupt rate in order to save power for the client-based systems.